package cn.net.dpi.shp.model.entity;

import cn.net.dpi.shp.handler.LineStringTypeHandler;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import org.locationtech.jts.geom.LineString;

/**
 * 道路向量实体
 *
 * @author ake
 * @since 2024-12-27
 */
@Getter
@Setter
@TableName(value = "hd_link", autoResultMap = true)
public class HdLink extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 道路编号,主键，全国唯
     */
    private String linkId;

    /**
     * 车道组编号,外键，引用 hd_lane_group 表lane_group_id
     */
    private String groupId;

    /**
     * 图幅编号,全国唯一
     */
    private String meshId;

    /**
     * 行政区划代码,全国唯一
     */
    private String adminCode;

    /**
     * 起点编号,外键，引用 hd_link_node 表 node_id
     */
    private String snodeId;

    /**
     * 终点编号,外键，引用 hd_link_node 表 node_id
     */
    private String enodeId;

    /**
     * 通行方向1：同方向2：逆方向3：双方向
     */
    private Long direction;

    /**
     * 车道数从 1 开始的正整数
     */
    private Long lanenum;

    /**
     * 道路功能等级1：高速2：城市快速路3：一般道路
     */
    private Long linkFc;

    /**
     * 道路经路层等级
     */
    private Long linkLevel;

    /**
     * 道路官方名
     */
    private String offName;

    /**
     * 道路别名
     */
    private String anotherNm;

    /**
     * 道路曾用名
     */
    private String formerNm;

    /**
     * 道路标准编号
     */
    private String linkNum;

    /**
     * 道路长度单位：m，保留两位小数
     */
    private Double length;

    /**
     * 收费标识1：不收费2：收费
     */
    private Long chargeFlg;

    /**
     * 上下行标识1：否2：是
     */
    private Long separate;

    /**
     * 限速类型1：可变限速2：固定限速3：条件限速4：理论限速可多选，用“丨”分开。
     */
    private Long speedType;

    /**
     * 最高限速单位：km/h
     */
    private String speedMax;

    /**
     * 最低限速单位：km/h
     */
    private String speedMin;

    /**
     * 道路左边界编号
     */
    private String lBordId;

    /**
     * 道路右边界编号
     */
    private String rBordId;

    /**
     * 路面材质1：沥青2：水泥混凝土3：砖路面4：石板5：沙石6：鹅卵石7：木质路面8：土质路面9：环氧地坪99：其他
     */
    private Long material;

    /**
     * 道路类型
     */
    private String linkType;

    /**
     * 更新时间
     */
    private String time;

    @TableField(typeHandler = LineStringTypeHandler.class)
    private LineString geometry;

    private Long fileId;

    private String version;

    private Integer versionFlag;
}
